package androidx.sqlite.db;

import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteTransactionListener;
import android.os.CancellationSignal;
import android.util.Pair;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import java.io.Closeable;
import java.util.List;
import java.util.Locale;

public abstract interface SupportSQLiteDatabase extends Closeable {
	public abstract SupportSQLiteStatement compileStatement(String paramString);

	public abstract void beginTransaction();

	public abstract void beginTransactionNonExclusive();

	public abstract void beginTransactionWithListener(SQLiteTransactionListener paramSQLiteTransactionListener);

	public abstract void beginTransactionWithListenerNonExclusive(SQLiteTransactionListener paramSQLiteTransactionListener);

	public abstract void endTransaction();

	public abstract void setTransactionSuccessful();

	public abstract boolean inTransaction();

	public abstract boolean isDbLockedByCurrentThread();

	public abstract boolean yieldIfContendedSafely();

	public abstract boolean yieldIfContendedSafely(long paramLong);

	public boolean isExecPerConnectionSQLSupported();


	public void execPerConnectionSQL(@NonNull String sql, @SuppressLint({"ArrayReturn"}) @Nullable Object[] bindArgs);


	public abstract int getVersion();

	public abstract void setVersion(int paramInt);

	public abstract long getMaximumSize();

	public abstract long setMaximumSize(long paramLong);

	public abstract long getPageSize();

	public abstract void setPageSize(long paramLong);

	public abstract Cursor query(String paramString);

	public abstract Cursor query(String paramString, Object[] paramArrayOfObject);

	public abstract Cursor query(SupportSQLiteQuery paramSupportSQLiteQuery);

	@RequiresApi(api = 16)
	public abstract Cursor query(SupportSQLiteQuery paramSupportSQLiteQuery, CancellationSignal paramCancellationSignal);

	public abstract long insert(String paramString, int paramInt, ContentValues paramContentValues) throws SQLException;

	public abstract int delete(String paramString1, String paramString2, Object[] paramArrayOfObject);

	public abstract int update(String paramString1, int paramInt, ContentValues paramContentValues, String paramString2, Object[] paramArrayOfObject);

	public abstract void execSQL(String paramString) throws SQLException;

	public abstract void execSQL(String paramString, Object[] paramArrayOfObject) throws SQLException;

	public abstract boolean isReadOnly();

	public abstract boolean isOpen();

	public abstract boolean needUpgrade(int paramInt);

	public abstract String getPath();

	public abstract void setLocale(Locale paramLocale);

	public abstract void setMaxSqlCacheSize(int paramInt);

	@RequiresApi(api = 16)
	public abstract void setForeignKeyConstraintsEnabled(boolean paramBoolean);

	public abstract boolean enableWriteAheadLogging();

	@RequiresApi(api = 16)
	public abstract void disableWriteAheadLogging();

	@RequiresApi(api = 16)
	public abstract boolean isWriteAheadLoggingEnabled();

	public abstract List<Pair<String, String>> getAttachedDbs();

	public abstract boolean isDatabaseIntegrityOk();
}